package com.autorun.server.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * APK实体类
 * 
 * @author autorun
 * @version 1.0.0
 */
@Data
@TableName("apks")
public class Apk {

    /**
     * APK ID
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * APK名称
     */
    private String name;

    /**
     * 游戏名称
     */
    private String game;

    /**
     * 版本号
     */
    private String version;

    /**
     * 版本代码（用于版本比较）
     */
    @TableField("version_code")
    @JsonProperty("version_code")
    private Integer versionCode;

    /**
     * 版本说明
     */
    private String description;

    /**
     * 文件名
     */
    @TableField("file_name")
    @JsonProperty("file_name")
    private String fileName;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    @JsonProperty("file_size")
    private Long fileSize;

    /**
     * MD5哈希值
     */
    @TableField("md5_hash")
    @JsonProperty("md5_hash")
    private String md5Hash;

    /**
     * OSS存储路径
     */
    @TableField("oss_path")
    @JsonProperty("oss_path")
    private String ossPath;

    /**
     * 上传用户ID
     */
    @TableField("upload_user_id")
    @JsonProperty("upload_user_id")
    private Integer uploadUserId;

    /**
     * 上传时间
     */
    @TableField("upload_time")
    @JsonProperty("upload_time")
    private LocalDateTime uploadTime;

    /**
     * 是否启用
     */
    @TableField("is_active")
    @JsonProperty("is_active")
    private Boolean isActive;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonProperty("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonProperty("update_time")
    private LocalDateTime updateTime;

    /**
     * 上传用户信息（关联查询）
     */
    @TableField(exist = false)
    @JsonProperty("upload_user")
    private User uploadUser;
}